인쇄 검사 예제 - Blob 기반 Template Matching을 사용한 위치 보정 및 결함 검출

간략한 설명

파일: \examples\Processing\ObjectFeatures\PrintInspection\PrintInspection_Blob.vad

기본 플랫폼: imaFlex CXP-12 쿼드

요약 설명

블롭 기반의 위치 보정 및 결함 탐지

이미지 내 물체의 위치 및 방향 보정과 그에 따른 결함 검출은 "PrintInspection_Blob.vad" 설계에서 수행됩니다. 이 예제는 템플릿으로 사용할 수 있는 인쇄물이 두 개 이상 있는 물체에 적합합니다. 특정 인쇄 문양은 물체 상에 단 한 번만 나타나야 합니다. 예제 이미지 "TestImage.tif"에서는 "K"와 "g" 문자가 29x38 픽셀 크기의 템플릿 1과 2로 선택되었습니다. 설계의 최상위 레이어에 있는 주석 상자에는 사용자의 예제 이미지에 맞게 설계를 조정하는 개별 단계가 설명되어 있습니다. 이 디자인에서는 물체 상의 두 템플릿에 대한 블롭 감지 기반 인식을 통해 물체의 위치와 방향이 결정됩니다. 두 템플릿의 좌표를 바탕으로 물체의 무게 중심이 계산됩니다. 템플릿 1과 2의 상대적 위치를 바탕으로 물체의 회전 각도 Phi가 계산됩니다. 이러한 정보를 바탕으로 에 설명된 기하학적 변환이 수행됩니다. 이 변환의 구현은 에 설명된 설계 예제 "Geometric Transformation_ImageMoments.va"와 동일합니다. 위치 및 방향이 보정된 객체의 결함은, 계산된 보정된 객체에서 해당 객체의 "골든 마스터" 템플릿을 차감함으로써 발견됩니다. 남은 부분이 잠재적인 결함입니다. 블롭 감지를 통해 이러한 결함의 위치를 파악하고, 이를 위치 및 방향이 보정된 객체의 이미지에 표시합니다. 사용자는 결함이 포함된 이미지를 전송할지, 아니면 위치가 보정된 객체와 결함 위치 정보가 첨부된 이미지를 PC로 전송할지 선택할 수 있습니다. 다음에서는 기본 설계 구조와 개별 모듈의 기능을 설명합니다. 그림 380에서는 기본 설계 구조를 확인할 수 있습니다.

VA 설계 “PrintInspection_Blob.vad”의 기본 설계 구조

그림 380. VA 설계 “PrintInspection_Blob.vad”의 기본 설계 구조


HierarchicalBox 내에서 FindPatterns (그림 381 참조)에서 획득된 이미지 (박스 ImageAcquisition에서 가져온) 이미지는 HierarchicalBox Binarization 에서 간단한 임계값을 사용하여 이진화됩니다. 예제 이미지를 변경할 때 이 임계값을 사용 중인 이미지에 맞게 조정할 수 있습니다. HierarchicalBox BlobDetection 에서 이진화된 이미지의 객체들은 연산자 Blob_Analysis_2D연산자를 통해 탐지됩니다. 이 연산자의 출력값은 x 및 y 좌표와 발견된 각 객체를 둘러싼 경계 상자의 면적입니다. 디자인의 주석 상자에서 이러한 매개연산자를 통해 탐지됩니다. 이 연산자의 출력값은 발견된 각 객체를 둘러싼 경계 상자의 x, y 좌표와 면적입니다. 디자인 화면의 설명란에서 이러한 매개변수에 대한 더 자세한 정보를 확인할 수 있습니다. 발견된 객체들은 이후 상자 BlobSelection 상자에서 크기와 위치를 기준으로 선택됩니다. 템플릿과 관련된 객체에 대한 좌표 및 크기 정보만 남게 됩니다. 매개변수 IS_InRange 매개변수를 템플릿에 맞게 조정해 주십시오(상자 FindPatterns상자를 마우스 오른쪽 버튼으로 클릭). 좌표 및 크기 정보는 상자를 마우스 오른쪽 버튼으로 클릭)에 맞게 조정해 주십시오. 이 좌표 및 크기 정보는 HierarchicalBox ExtractCandidates에 입력됩니다 . 그림 382에서 해당 내용을 확인하십시오.

HierarchicalBox의 FindPatterns 내용

그림 381. HierarchicalBox의 FindPatterns 내용


HierarchicalBox의 ExtractCandidates 내용

그림 382. HierarchicalBox의 ExtractCandidates 내용


여기서는 (블롭 분석을 통해 탐지된) 각 객체를 연산자 ImageBufferMultiROIDyn_CutROIs 를 사용하여 원본 이미지에서 관심 영역(ROI)으로 잘라낸 후, 단일 프레임으로 전달됩니다. HierarchicalBox DeterminingCOGTemplates (그림 383 참조) 에서 템플릿 매칭 및 이에 따른 이미지 내 좌표 결정이 수행됩니다.

DeterminingCOGTemplates의 HierarchicalBox 내용

그림 383. DetermingCOGTemplates의 HierarchicalBox 내용


상자 안에는 템플릿 매칭 ( 그림 384의 내용 참조) 선택된 객체를 템플릿 1 및 2(크기 29x38 픽셀인 문자 "K"와 "g")와 매칭하는 작업이 수행됩니다. 에서 템플릿 템플릿 1과 2는 16비트 값(각 템플릿당 8비트)으로 조회 테이블 LUT_Values에 기록됩니다. 이미지에서 발견된 객체와 템플릿 1 및 2의 매칭은 상자 내에서의 간단한 3x3 커널 차분 연산으로 수행됩니다 Match상자 내에서 수행됩니다. TemplateMatch 에서는 가장 잘 일치하는 커널 성분이 선택됩니다. 다시 ' DeterminingCOGTemplates의 내용을 다시 살펴보면, 연산자 RowMin_Template1 및 RowMin_Template2연산자를 사용하여 가장 잘 일치하는 템플릿이 선택됩니다. 를 사용하여 가장 적합한 템플릿이 선정되며, 템플릿 1과 2의 해당 좌표는 레지스터 Register_COG_Template1, Register_COG_Template2 를 통해 템플릿 1 및 2의 해당 좌표를 설정하고, 박스 내의 마지막 픽셀을 선택합니다. SelectLastPixel함수를 통해 선택됩니다. 박스 DeterminingCOGTemplates 의 출력값은 템플릿 1과 2의 좌표입니다.

HierarchicalBox 템플릿 매칭의 내용

그림 384. HierarchicalBox TemplateMatching의 내용


기본 설계 구조로 돌아가서, 이제 HierarchicalBox를 살펴보겠습니다. COG_Angle를 살펴보겠습니다. 이 구조에서는 템플릿 1과 2의 좌표를 바탕으로 객체의 무게중심 좌표와 회전 각도가 결정됩니다. 다음 내용을 참조하십시오. COG_Angle 의 내용을 그림 385에서 확인하십시오.

HierarchicalBox의 COG_Angle 속성

그림 385. HierarchicalBox의 COG_Angle 속성


회전 각도 객체의 크기는 상자 내에서 계산됩니다 회전각 에 따라

식 51.


여기서 템플릿 1과 2의 좌표가 x축 및 y축 방향에서 서로 얼마나 다른지 나타냅니다.

물체의 무게중심 좌표 다음에 따라 계산됩니다. 다음에 따라

식 52.


여기서 는 물체, 템플릿 1 및 템플릿 2의 무게중심 사이의 각도이며, 객체가 회전되지 않았을 때, 템플릿 2, 템플릿 1과 수평선 사이의 각도는 이는 물체의 무게 중심과 템플릿 1 사이의 거리입니다. 예시 이미지를 변경할 때는 상자를 마우스 오른쪽 버튼으로 클릭하여 이 값들을 조정해야 합니다. COG_Angle “속성” 항목에서.

다음과 같은 정보를 바탕으로 , 기하 변환은 박스 내에서 수행됩니다 "기하학적 변환" (그림에 제시된 기본 설계 구조를 참조하십시오. 380) 다음 섹션에서 설명된 VA 예제 “GeometricTransformation_ImageMoments.va”와 동등한 .

box의 출력인 위치 및 방향 보정 이미지에 발생할 수 있는 결함 GeometricTransformation 의 출력인 위치 및 방향 보정 이미지에서 결함이 발견되면, 해당 박스 FindDefects에서 발견되는데, 이 과정에서는 이미지의 “골든 마스터” 템플릿을 처리된 이미지에서 빼는 방식으로 이루어집니다. 잔여물(기하학적 변환 후 이차 선형 보간으로 인한 결과)을 제거한 후, box FindDefects의 출력에는 물체에서 발견된 순수한 결함만 남게 됩니다. 의 출력 결과는 물체에서 발견된 순수한 결함입니다. 박스 FindDefectPosition 내에서 연산자 Blob_Analysis_2D 를 사용하여 상자 내의 블롭 분석을 통해 이러한 결함의 좌표가 결정됩니다. 상자 AppendDefectPositionsToImage상자에서 이러한 좌표가 결정됩니다. 상자에서 이 좌표들이 위치 및 방향이 보정된 이미지에 추가됩니다. 사용자는 연산자 "Blob_Analysis_2D"의 매개변수 "SelectSource"를 설정하여, 순수한 결함만 포함된 이미지를 전송할지, 아니면 결함 좌표가 포함된 보정된 이미지를 DMA를 통해 PC로 전송할지 선택할 수 있습니다. SourceSelector 의 "SelectSource" 매개변수를 0 또는 1로 설정함으로써, 순수한 결함만 포함된 이미지를 전송할지, 아니면 결함 좌표가 포함된 보정된 이미지를 DMA를 통해 PC로 전송할지 선택할 수 있습니다.